BI.BasicTreeItem = BI.inherit(BI.NodeButton, {
    _defaultConfig: function () {
        var conf = BI.BasicTreeItem.superclass._defaultConfig.apply(this, arguments);
        return BI.extend(conf, {
            baseCls: (conf.baseCls || "") + " bi-tree-item bi-list-item-active",
            id: "",
            pId: "",
            height: 24,
            readonly: true,
            isFirstNode: false,
            isLastNode: false,
        });
    },

    render: function () {
        var self = this, o = this.options;

        return {
            type: "bi.vertical_adapt",
            columnSize: ["", "fill"],
            items: [
                {
                    el: {
                        type: "bi.layout",
                        height: o.height,
                        width: o.height,
                        cls: this.getLineCls(),
                    },
                    lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,  //  偏移公式为每一层的偏移量为节点高度的一半
                },
                {
                    el: {
                        type: "bi.label",
                        ref: function (_ref) {
                            self.text = _ref;
                        },
                        textAlign: "left",
                        whiteSpace: "nowrap",
                        textHeight: o.height,
                        height: o.height,
                        hgap: o.hgap || o.textHgap,
                        vgap: o.textVgap,
                        lgap: o.textLgap,
                        rgap: o.textRgap,
                        text: o.text,
                        value: o.value,
                        keyword: o.keyword,
                        py: o.py
                    },
                }
            ]
        };
    },

    getLineCls: function () {
        var options = this.options;
        if (options.layer === 0 && options.isFirstNode && options.isLastNode) {
            return "";
        } else if (options.layer === 0 && options.isFirstNode) {
            return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "first-solid-line-conn-background" : "first-line-conn-background";
        } else if (options.isLastNode) {
            return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "last-solid-line-conn-background" : "last-line-conn-background";
        } else {
            return BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "mid-solid-line-conn-background" : "mid-line-conn-background";
        }
    },

    doRedMark: function () {
        this.text.doRedMark.apply(this.text, arguments);
    },

    unRedMark: function () {
        this.text.unRedMark.apply(this.text, arguments);
    },

    getId: function () {
        return this.options.id;
    },

    getPId: function () {
        return this.options.pId;
    }

});

BI.shortcut("bi.tree_item", BI.BasicTreeItem);
